package com.ctparking;

import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

public class Parcheggio {
    private String nome;
    private int posti_disponibili;
    private int icon;
    private String indirizzo;
    private double latitudine;
    private double longitudine;
    
    public Parcheggio(String nome, int posti_disponibili, int icon, String indirizzo, double lat, double lg) {
            super();
            this.nome = nome;
            this.posti_disponibili = posti_disponibili;
            this.icon = icon;
            this.indirizzo = indirizzo;
            this.latitudine = lat;
            this.longitudine = lg;
    }
    
    public Parcheggio(){}
    
    public Parcheggio(Parcheggio p){
    	super();
    	this.nome = p.nome;
        this.posti_disponibili = p.posti_disponibili;
        this.icon = p.icon;
        this.indirizzo = p.indirizzo;
        this.latitudine = p.latitudine;
        this.longitudine = p.longitudine;
    }
    
    public Parcheggio(JSONObject json){
    	super();
    	try{
	    	this.nome = json.getString("nome");
	        this.posti_disponibili = Integer.parseInt(json.getString("posti_disponibili"));
	        //this.icon = ;
	        this.indirizzo = json.getString("indirizzo");
	        this.latitudine = Double.parseDouble(json.getString("latitudine"));
	        this.longitudine = Double.parseDouble(json.getString("longitudine"));
    	}catch (JSONException e){
    		e.printStackTrace();
    	}
    }
    
    public String getNomeWeb() {
            return nome;
    }
    
    public String getNome() {
    	String[] s = nome.split("_");
    	String result = "";
    	for(int i = 0; i < s.length; i++)
    		result = result + s[i] + " "; 
        return result;
    }
    
    public String getIndirizzo() {
        return indirizzo;
    }
    
    public int getPosti() {
            return posti_disponibili;
    }
    
    public String stringPosti(){
    	Integer i= posti_disponibili;
    	return i.toString();
    }
    
   public String decPosti(String URL){
	   if (posti_disponibili > 0){
	    	posti_disponibili--;
	    	return connectToServer(URL);
	   }
	   return "0";
    }
   
   public String incPosti(String URL){
	   posti_disponibili++;
	   return connectToServer(URL);
   }
   
   public void decPosti(){
	   posti_disponibili--;
   }
   
   private String connectToServer(String URL){
	   
	   try {
       	HttpClient httpclient = new DefaultHttpClient();  
       	HttpGet method = new HttpGet(URL);    
         
       	HttpResponse res = httpclient.execute(method); 
       	
       	InputStream data = res.getEntity().getContent();
    	String out = parseISToString(data);
    	   	
   		return out;
   		
	   	}catch(UnsupportedEncodingException e){
	   		e.printStackTrace();
	   	}catch(ClientProtocolException e){
	   		e.printStackTrace();
	   	}catch( IOException e){
	   		e.printStackTrace();
	   	}
	   
   		return "-1";
   }
   
   private static String parseISToString(InputStream is){
		  java.io.DataInputStream din = new java.io.DataInputStream(is);
		  StringBuffer sb = new StringBuffer();
		  try{
		   String line = null;
		   while((line=din.readLine()) != null){
		    sb.append(line+"\n");
		   }
		  }catch(Exception ex){
		   ex.getMessage();
		  }finally{
		   try{
		    is.close();
		   }catch(Exception ex){}
		  }
		  return sb.toString();
		 }

    public int getIcon() {
            return icon;
    }
    
    public void setIcon(int icon){
    	this.icon = icon;
    }
    
    public String toString(){
    	return "NOME: "+ this.nome + "POSTI: " + this.posti_disponibili + "ICON: "+this.icon;
    }
    
    public double getLatitudine(){
    	return latitudine;
    }
    
    public double getLongitudine(){
    	return longitudine;
    }
}